import Vue from 'vue'
import router from '../router'
import axios from 'axios'
// 引入 ui 库
import ElementUI from 'element-ui';
// 引入 css
import 'element-ui/lib/theme-chalk/index.css';


//设置默认的 api 域名基准路径
axios.defaults.baseURL = 'http://127.0.0.1:3000'
//axios.defaults.baseURL = 'http://liangwei.tech:3000';

// 路由守卫
router.beforeEach((to,from,next)=>{
    if(to.meta.auth){
        const token = localStorage.getItem('token');
        if(token){
          next();
        }else{
          router.push('/login')
        }
    }else{
        next();
    }
});

// 设置axios请求拦截器
axios.interceptors.request.use(config=>{
    if(!config.headers.Authorization && localStorage.getItem('token')){
        config.headers.Authorization = 'Bearer ' + localStorage.getItem('token');
    }
    return config;
})


// 设置响应拦截器 （统一处理响应回来的数据）
axios.interceptors.response.use(res=>{
    const {statusCode,message} = res.data;
    const {url} = res.config;//获取接口

    let urlArr = ['/login'];//这里的接口不走拦截器

    if(!urlArr.includes(url)){
        // 对用户信息验证失败情况进行处理
        if(statusCode && statusCode == 401 && message == '用户信息验证失败'){
            message.error('用户信息验证失败，请重新登录');
            localStorage.removeItem('token');
            localStorage.removeItem('userId');
            router.replace('/login');
        }else if(statusCode && statusCode.toString().startsWith('4',0)){
            console.log(message);
            message.error(message);
        }
    }
    return res;
  },(err)=>{
    // 暂不处理
    message.error('请联系相关人员处理');
    console.log(err);
})


// 全局过滤器
Vue.filter('fixImgUrl',(url)=>{
    const reg = /^http/;
    if(reg.test(url)){
       return url;
    }else{
       return axios.defaults.baseURL + url;
    }
});
